package de.revdev.streckenliste.managedbeans;

import de.revdev.streckenliste.dao.BenutzerDAO;
import de.revdev.streckenliste.entities.Benutzer;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author f.lindermaier
 */
@Named(value = "benutzerBean")
@SessionScoped
public class BenutzerBean implements Serializable {

    @Inject
    private BenutzerDAO bdao;
    private Benutzer benutzer;

    /**
     * Creates a new instance of BenutzerBean
     */
    public BenutzerBean() {
    }

    /**
     * überprüft ob der angemeldete Benutzer der Adminrolle angehört
     *
     * @return true wenn Admin
     */
    public boolean istInRolleAdmin() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        if (request.isUserInRole("Admin")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * überprüft ob der angemeldete Benutzer der Jaegerrolle angehört
     *
     * @return true wenn Jaeger
     */
    public boolean istInRolleJaeger() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
        if (request.isUserInRole("Jaeger")) {
            return true;
        } else {
            return false;
        }
    }

    public Benutzer getBenutzer() {
        if (benutzer == null) {
            FacesContext context = FacesContext.getCurrentInstance();
            HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
            benutzer = bdao.findByEMail(request.getRemoteUser());
        }
        return benutzer;
    }

    public void setBenutzer(Benutzer benutzer) {
        this.benutzer = benutzer;
    }
}
